【字节】后端开发实习生-AI Lab面经

AI Lab的后端，偏向于算法落地，不会涉及很多os、网络的知识，对代码能力要求比较高。

----------------------------------------------------------------------------------
一面：
1.自我介绍 
2.实习经历（感觉很喜欢问友商的问题hh）
2.1 上家公司快手，北京，疫情原因远程
2.2 group是干什么的？你做了什么？
2.3 主要用了什么技术？对你哪方面能力提升较多？
2.4 为什么不继续实习？
个人建议这种问题不要故意踩一捧一，我主要是因为学校在上海，自然选字节实习方便，也有很多学长 
3.acm经历
队内角色？能力培养？balabala吹 
4.c++
4.1 new/malloc区别？
4.2 智能指针？三个
4.3 智能指针原理？用一个类把传统的指针维护起来，并且把delete写在析构函数里
4.3+ 为什么可以这么做？对象跳出生命周期就没有用了，如果是一个类的话就会调用析构函数
4.4 cast？const_cast static_cast dynamic_cast reinterpret_cast
4.5 c+ +应用场景？类型转换
4.6 c++ 面试官指出malloc的void*用cast转换 
5.手撕代码:链表的某一区间反转 强调边界条件
6.反问
具体做什么的？
一块是算法落地，python代码改写c++，提高效率，在终端能快速运行等等
还有就是完整实现一个服务，大概就是写服务接口之类的

--------------------------------------------------------------------------
二面：
二面应该是leader面，感觉就不是很死磕技术，更看重思维
自我介绍
实习经历
acm经历
手撕代码
 ac自动机
ac自动机最开始的那个例题 不想多说
所有厂的面试官加起来可能也只会拿这一个裸题来碰瓷学生罢了 体验极差
3.1+ 表示这种题直接放弃 没必要 属于我们队的战略性放弃题型
3.1++ 那你擅长什么？组队前所有内容都要学，但比赛的话负责签到、dp、高级数据结构
3.2 dp
n = 5x+2y+z 正整数解的个数
考虑z的系数是1，所以对于任意一组(x,y)，只要5x+2y<n，z都是存在的
所以只要考虑有多少组(x,y)即可
第一重x循环，然后y求一个上界(n-5*x)/2，那么0～这个上界都是合法的，累加即可
然后表示这个东西应该是可以优化到O(1)，但是细节很多，所以先写这个O(n)的
（写这个O(n)的算法......）
然后说这边如果不考虑/2的舍位问题的话就是一个简单的等差数列求和，但问题是奇数/2会有一个0.5的误差，所以还需要统计这个0.5的误差，然后就要有个很复杂的讨论balabala
面试官表示是对的，那暂时就不用具体实现了，就先这样
（大概到现在只过了20分钟）直接聊天
你有看什么书吗？有看什么咨询吗？有什么想分享的技术聊一聊吗？
（尬聊）
